/*给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。
然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k，要通过此题，您需要执行以下操作：

更改 nums 数组，使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
返回 k。*/
#include"const.h"
namespace Remove_Element
{   //这里通过快慢指针的方式，一开始i，k两个指针指向同一个位置，当遇到目标值val的时候，k不会向前移动，i继续向前移动
    //此时i和k指向的值nums[k]和nums[i]便是目标值val和val的后一个，在没一个下次循环中将值进行移动即可    
    class Solution {
    public:
        int removeElement(std::vector<int>& nums, int val) {
            int k=0;
            for (int i = 0; i < nums.size(); i++)
            {
                if (nums[i] != val)
                {
                    nums[k] = nums[i];
                    k++;
                }
            }
            return k;
        }
    };
}